Conventional database access systems may utilize a page-based buffer caching mechanism for storing recently accessed data for performing operations in a database. The operation may include, for example, insert, delete, update, or select operations. Unfortunately, buffer cache memories (or “buffer caches”) suffer from a number of inefficiencies relating to data access latency and memory optimization that restrict database performance. Some of the issues impacting performance of a database buffer cache include contention caused by the buffer latches at the buffer input/output (I/O) pins, increased data flow latency for hard disk access operations (i.e., from/to hard disk), and pinning/unpinning of buffers in accordance with the rules of write-ahead logging to maintain database consistency. These drawbacks lead to increasingly poor and unpredictable performance as the amount of data stored in the database increases.
In addition, conventional buffer caches rely upon hash tables for data access and search operations. But hash tables require a sequential scan of an entire overflow chain for each hash container, which becomes more expensive as the overflow chain becomes longer with every addition of new entries. Further, hash table mechanisms used in buffer caches are configured to compare search keys for every element in the overflow chain, which requires additional memory space for storing the key values for each element as well as the additional latency required to perform the comparison of the key values at every element of the overflow chain. Hash tables also have no limits on cache misses as overflow chains could be very long. Cache misses cause degradation in performance.
In addition, buffer caches require implementation of locks at each bucket in the hash table for searching and updating the hash table. This makes it difficult to scale or to provide a highly concurrent environment in which multiple operations are being performed at the same time. Finally, buffer caches require a large data structure to facilitate the database accesses which wastes memory space.